from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.urls import reverse
from myadmin.models import Users
import logging

# 配置日志用于调试
logger = logging.getLogger(__name__)

def index(request):
    """ 移动端首页 """
    return render(request,"mobile/index.html")

def login(request):
    """ 移动端用户登录表单 """
    return render(request,"mobile/login.html")

def dologin(request):
    """ 执行用户登录 """
    # 记录所有请求数据用于调试
    logger.debug(f"登录请求数据: {request.POST}")
    
    if request.method == 'POST':
        # 检查是否是验证码登录方式
        if 'mobile' in request.POST and request.POST.get('mobile'):
            # 验证码登录流程
            mobile = request.POST.get('mobile')  # 前端表单字段
            code = request.POST.get('code', '')
            
            # 1. 基础验证
            if not mobile:
                return render(request, 'mobile/login.html', {'info': '请输入手机号码'})
            if not code:
                return render(request, 'mobile/login.html', {'info': '请输入验证码'})
            
            # 2. 验证手机号格式
            if not mobile.isdigit() or len(mobile) != 11:
                return render(request, 'mobile/login.html', {'info': '请输入正确的11位手机号码'})
            
            try:
                # 3. 关键修复：使用数据库phone字段匹配前端mobile输入
                # 同时检查用户状态是否为启用（status=1）
                user = Users.objects.get(phone=mobile, status=1)
                logger.debug(f"找到匹配用户: {user.username}")
                
                # 4. 验证码验证（这里使用固定值测试，实际应从缓存获取）
                # 注意：生产环境必须替换为真实的验证码验证逻辑
                valid_codes = ['1234', '5678']  # 测试用有效验证码
                if code in valid_codes:
                    # 5. 登录成功处理
                    response = redirect(reverse('mobile_index'))
                    # 存储用户ID而非手机号，便于后续查询
                    response.set_cookie('mobileuser_id', user.user_id)
                    response.set_cookie('mobileuser', user.username)
                    return response
                else:
                    logger.debug(f"验证码错误: 输入{code}, 有效码{valid_codes}")
                    return render(request, 'mobile/login.html', {'info': '验证码错误'})
                    
            except Users.DoesNotExist:
                # 详细日志帮助排查问题
                logger.debug(f"用户不存在: 手机号{mobile}，数据库字段为phone")
                return render(request, 'mobile/login.html', {'info': '该手机号未注册或已被禁用'})
            except Exception as e:
                # 捕获其他可能的异常
                logger.error(f"登录异常: {str(e)}")
                return render(request, 'mobile/login.html', {'info': '登录失败，请重试'})
        
        # 账号密码登录（保持原有逻辑不变）
        elif 'username' in request.POST and request.POST.get('username'):
            username = request.POST.get('username')
            password = request.POST.get('password')
            
            try:
                user = Users.objects.get(username=username, status=1)
                if user.password == password:  # 实际项目需使用密码哈希验证
                    response = redirect(reverse('mobile_index'))
                    response.set_cookie('mobileuser', username)
                    return response
                else:
                    return render(request, 'mobile/login.html', {'info': '密码错误'})
            except Users.DoesNotExist:
                return render(request, 'mobile/login.html', {'info': '用户名不存在或已被禁用'})
    
    # 非POST请求或参数不完整
    return redirect(reverse('mobile_login'))
